맨위로가기 타임라인 바로가기

소프트웨어 공학

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
타임라인 바로가기

1. 개요

소프트웨어 공학은 소프트웨어의 개발, 운영 및 유지보수에 체계적이고 학문적인 방법을 적용하는 분야이다. 1940년대 컴퓨터가 등장한 이후 소프트웨어의 복잡성을 다루기 위한 추상화와 프로그래밍 언어의 발전이 이루어졌다. 1960년대부터 공학의 한 분야로 인식되기 시작했으며, 1968년 NATO 소프트웨어 공학 컨퍼런스에서 소프트웨어 위기라는 용어가 처음 등장하며 개발의 어려움이 부각되었다. 주요 개념으로는 소프트웨어 개발 생명 주기, 요구사항 분석, 소프트웨어 설계, 구현, 테스팅, 유지보수 등이 있으며, 애자일 소프트웨어 개발, DevOps, 모델 주도 공학 등이 주요 방법론으로 연구되고 있다. 소프트웨어 공학은 윤리적, 사회적 책임을 가지며, 관련 교육 및 자격증 제도가 운영되고 있다. 최근에는 인공지능, 빅데이터 등 신기술과의 융합을 통해 지속적으로 발전하고 있다.

더 읽어볼만한 페이지

  • 소프트웨어 개발 - 컴퓨터 과학
    컴퓨터 과학은 컴퓨터와 관련된 현상을 연구하는 학문으로, 계산 이론, 하드웨어 및 소프트웨어 설계, 문제 해결 등을 포괄하며, 수학, 공학 등 여러 분야와 융합하여 발전해 왔다.
  • 소프트웨어 개발 - 스파이웨어
    스파이웨어는 사용자의 동의 없이 설치되어 개인 정보를 수집하거나 시스템을 감시하며, 다양한 형태로 존재하여 광고 표시, 정보 탈취, 시스템 성능 저하 등의 피해를 유발하는 악성 프로그램이다.
  • 소프트웨어 공학 - 통합 개발 환경
    통합 개발 환경(IDE)은 코드 편집, 빌드, 디버깅 등 소프트웨어 개발에 필요한 여러 기능을 통합적으로 제공하는 응용 프로그램이다.
  • 소프트웨어 공학 - 소프트웨어 개발
    소프트웨어 개발은 요구사항 분석, 설계, 코딩, 테스트, 배포, 유지보수를 포함하는 컴퓨터 프로그램 및 관련 데이터를 만드는 과정으로, 다양한 방법론과 도구가 사용되며, 개발자 외에도 다양한 전문가들이 참여한다.
  • 컴퓨터에 관한 - 고속 패킷 접속
    고속 패킷 접속(HSPA)은 3세대 이동통신(3G)의 데이터 전송 속도를 높이는 기술 집합체로, 고속 하향/상향 패킷 접속(HSDPA/HSUPA)을 통해 속도를 개선하고 다중 안테나, 고차 변조, 다중 주파수 대역 활용 등의 기술로 진화했으나, LTE 및 5G 기술 발전으로 현재는 상용 서비스가 중단되었다.
  • 컴퓨터에 관한 - 데이터베이스
    데이터베이스는 여러 사용자가 공유하고 사용하는 정보의 집합으로, 데이터베이스 관리 시스템을 통해 접근하며, 검색 및 갱신 효율을 높이기 위해 고도로 구조화되어 있고, 관계형, NoSQL, NewSQL 등 다양한 모델로 발전해왔다.
소프트웨어 공학
핵심 활동
소프트웨어소프트웨어
소프트웨어 개발소프트웨어 개발
요구 분석요구 분석
소프트웨어 아키텍처소프트웨어 아키텍처
소프트웨어 설계소프트웨어 설계
소프트웨어 공학소프트웨어 공학
프로그래밍프로그래밍
소프트웨어 테스트소프트웨어 테스트
디버깅디버깅
소프트웨어 배포소프트웨어 배포
소프트웨어 유지보수소프트웨어 유지보수
패러다임 및 모델
애자일 소프트웨어 개발애자일 소프트웨어 개발
소프트웨어 클린룸소프트웨어 클린룸
반복형 개발반복형 개발
소프트웨어 프로토타이핑소프트웨어 프로토타이핑
스파이럴 모델스파이럴 모델
V 모델V 모델
워터폴 모델워터폴 모델
소프트웨어 개발 방법론 및 프레임워크
적응형 소프트웨어 개발적응형 소프트웨어 개발
DevOpsDevOps
규율적 애자일 전달규율적 애자일 전달
동적 시스템 개발 방법동적 시스템 개발 방법
사용자 기능 중심 개발사용자 기능 중심 개발
반복형 개발반복형 개발
칸반칸반
린 소프트웨어 개발린 소프트웨어 개발
LeSSLeSS
모델 기반 공학모델 기반 공학
Microsoft Solutions FrameworkMicrosoft Solutions Framework
개인 소프트웨어 프로세스개인 소프트웨어 프로세스
래피드 애플리케이션 개발래피드 애플리케이션 개발
래셔널 통합 프로세스래셔널 통합 프로세스
Scaled Agile FrameworkScaled Agile Framework
스크럼스크럼
SEMATSEMAT
팀 소프트웨어 프로세스팀 소프트웨어 프로세스
OpenUPOpenUP
통합 프로세스통합 프로세스
익스트림 프로그래밍익스트림 프로그래밍
개발 지원
소프트웨어 구성 관리소프트웨어 구성 관리
소프트웨어 문서화소프트웨어 문서화
소프트웨어 품질 보증소프트웨어 품질 보증
소프트웨어 프로젝트 관리소프트웨어 프로젝트 관리
사용자 경험사용자 경험
실천
인수 테스트 기반 개발인수 테스트 기반 개발
행위 주도 개발행위 주도 개발
집단 코드 소유권집단 코드 소유권
지속적 통합지속적 통합
지속적 전달지속적 전달
도메인 주도 설계도메인 주도 설계
페어 프로그래밍페어 프로그래밍
예시를 통한 명세예시를 통한 명세
스탠드업 미팅스탠드업 미팅
테스트 주도 개발테스트 주도 개발
프로그래밍 도구
컴파일러컴파일러
디버거디버거
링커링커
성능 분석성능 분석
GUI 빌더GUI 빌더
UML 도구UML 도구
통합 개발 환경통합 개발 환경
빌드 자동화빌드 자동화
애플리케이션 릴리스 자동화애플리케이션 릴리스 자동화
코드형 인프라코드형 인프라
소프트웨어 테스트 도구:분류:소프트웨어 테스트 도구
표준 및 기관
BABOKBABOK
CMMICMMI
IEEE 표준 협회IEEE 표준 협회
ISO 9001ISO 9001
ISO/IEC JTC 1/SC 7ISO/IEC JTC 1/SC 7
PMBOKPMBOK
SWEBOKSWEBOK
ITILITIL
용어집
인공지능 용어집인공지능 용어집
컴퓨터 과학 용어집컴퓨터 과학 용어집

2. 역사

소프트웨어 공학의 발전은 컴퓨터 하드웨어 및 프로그래밍 언어의 발전과 밀접하게 연관되어 있다.

1960년대부터 소프트웨어 공학은 공학의 별개 분야로 인식되기 시작했다.[7] "소프트웨어 공학"이라는 용어는 1965년 "컴퓨터 및 자동화" 잡지에 처음 등장했으며,[8] 1966년 ''ACM 커뮤니케이션스''에서 보다 공식적으로 사용되었다.[9][10] 1968년 F. L. 바우어 교수가 주최한 NATO 컨퍼런스의 제목과도 관련이 있다.[11] 마가렛 해밀턴은 아폴로 계획 당시 "소프트웨어 공학"이라는 분야를 설명했다.[12]

1984년, 소프트웨어 공학 연구소(SEI)가 카네기 멜론 대학교에 설립되었다.[18] 왓츠 험프리는 소프트웨어 공학 프로세스를 이해하고 관리하는 것을 목표로 하는 SEI 소프트웨어 프로세스 프로그램을 설립했다.[18] 도입된 프로세스 성숙도 수준은 능력 성숙도 모델 통합(CMMI-DEV)이 되었으며, 이는 미국 정부가 소프트웨어 개발팀의 능력을 평가하는 방법을 정의했다.

소프트웨어 공학의 현대적이고 일반적으로 받아들여지는 모범 사례는 소프트웨어 공학 지식체계(SWEBOK)로 발표되었다.[6]

1949년 EDSAC에서는 이미 로더가 초기 어셈블러의 기능을 갖추고 있었던 것으로 알려져 있다.[106] 1950년대 전후에는 EDSAC나 EDVAC과 같은 초기 컴퓨터의 프로그래밍에 대한 문헌이 발표되면서 초기 프로그래밍 기법이 알려지게 되었다. 언어 측면에서는 직접 이진수로 기계어를 작성하는 번거로움을 피하기 위해 어셈블리어가 곧 등장했다. 1950년대 중반에는 오토코드, 포트란, 리스프 등 초기 고급 언어가 나타났다.

2. 1. 초기 (1940년대 ~ 1960년대)

1941년 현대 디지털 컴퓨터가 처음 등장했을 때, 연산 명령은 배선으로 주어졌다. 실무진들은 곧 이러한 설계 방식이 유연하지 않다는 것을 깨달았고, "프로그램 내장 방식"인 폰 노이만 구조를 개발하였다. 이는 "하드웨어"와 "소프트웨어" 사이의 최초 구분을 가져왔고, 전산의 복잡성을 다루기 위해 추상화가 동반되었다.

프로그래밍 언어는 1950년대에 나타나기 시작했으며, 이는 추상화를 향한 또 하나의 큰 발걸음이었다. 포트란, 알골, 코볼 등 주요 언어들이 1950년대 말 배포되어 과학, 알고리즘, 경영상의 문제를 각각 다루었다. 에츠허르 데이크스트라는 1968년 "Go to 문은 해로운 것으로 생각된다"라는 중요한 논문을 발표했고,[110] 데이빗 파르나스는 1972년 모듈성과 정보 은폐라는 핵심 개념을 소개하여[111] 프로그래머들이 계속 증가하는 소프트웨어 시스템의 복잡성을 다루는 데 도움을 주었다.

2. 2. 소프트웨어 위기 (1960년대 후반 ~ 1970년대)

1968년 NATO 소프트웨어 공학 회의에서 "소프트웨어 위기"라는 용어가 처음 등장하면서, 소프트웨어 개발의 복잡성 증가와 관리 어려움에 대한 문제 인식이 확산되었다.[13][14][15] 당시 소프트웨어 개발은 예산 초과, 기한 미준수, 광범위한 디버깅 및 유지보수 필요, 소비자 요구 불만족, 심지어 프로젝트 미완료 등의 문제에 직면했다.[7]

같은 해, 에츠허르 데이크스트라는 "Go to 문은 해로운 것으로 생각된다"라는 중요한 논문을 발표했다.[110] 1972년에는 데이빗 파르나스가 모듈성과 정보 은폐라는 핵심 개념을 소개하여, 프로그래머들이 점차 증가하는 소프트웨어 시스템의 복잡성을 다루는 데 도움을 주었다.[111]

2. 3. 발전기 (1970년대 ~ 1980년대)

1969년에 유닉스 운영체제가 등장하였다.[111] 1967년에는 시뮬라 언어가 객체 지향 프로그래밍 패러다임을 소개하였다.[111]

1970년대 중반 마이크로컴퓨터가 소개되어 취미로 컴퓨터를 구하고 그 소프트웨어를 작성하는 것이 경제적으로 가능해졌다. 이는 개인용 컴퓨터마이크로소프트 윈도우로 이어졌다.[112] 소프트웨어 개발 프로세스(SDLC) 또한 나타나기 시작하여 1980년대 중반에는 중앙 집중화된 소프트웨어 개발을 위한 일치된 합의로서 자리매김하였다.[112] 1970년대 말과 1980년대 초 시뮬라에서 영감을 받은 C++, 스몰토크, 오브젝티브-C와 같은 새로운 객체 지향 프로그래밍 언어들이 등장했다.[112]

2. 4. 성숙기 (1990년대 ~ 현재)

오픈 소스 소프트웨어는 1990년대 초 나타나기 시작하여 리눅스와 "바자(bazaar)" 또는 분산형 소프트웨어 개발 방식을 소개하였다.[112] 인터넷월드와이드웹은 1990년대 중반 소프트웨어 공학에 큰 영향을 미쳤다. 시스템 설계 방식은 분산 시스템으로 전환되었고, 자바 프로그래밍 언어는 가상 머신을 통해 추상화를 발전시켰다. 애자일(Agile) 선언문은 더 빠르고 유연한 개발 프로세스를 지향하였다.

현재의 소프트웨어 공학 정의는 오늘날의 실무자들이 더 저렴하고, 더 크고, 더 빠르게 소프트웨어를 개발하고자 노력함에 따라 아직도 논쟁 중에 있다.

3. 한국 소프트웨어 공학의 역사

(이전 출력이 없으므로, 수정할 내용이 없습니다. 원본 소스를 제공해주시면 위키텍스트를 생성하고, 그 결과를 다시 제공해주시면 수정해드리겠습니다.)

4. 주요 개념 및 방법론

소프트웨어 공학은 소프트웨어의 개발, 운영, 유지보수를 체계적이고 정량적으로 다루는 학문 분야이다.[84] 이는 '공학'적인 접근 방식을 통해 소프트웨어의 신뢰성, 유지보수성, 개발 효율성을 높이는 것을 목표로 한다.[85]

소프트웨어 공학은 크게 설계생산 두 가지 영역으로 나뉜다. 설계는 소프트웨어 아키텍처를 다루며, 생산은 소프트웨어 생명 주기 프로세스를 다룬다. 이 두 영역은 상호 연관되어 있으며, 각각 장점과 제약점을 가진다.

소프트웨어 공학은 요구사항 분석, 소프트웨어 설계, 프로그래밍, 소프트웨어 테스팅, 소프트웨어 유지보수 등의 작업을 포함한다.[86] 또한, 컴퓨터 과학, 컴퓨터 공학, 경영 관리론, 수학, 프로젝트 관리(소프트웨어 프로젝트 관리), 품질 관리, 인간 공학, 시스템 공학 등 다양한 학문 분야와 관련되어 있다.[87] 데이터베이스 설계와 같이 다른 분야에서 독립하거나, 객체 지향 기술처럼 다른 분야의 개념을 도입하기도 한다.

''software engineering''이라는 용어는 Brian Randell가 고안했고, 1968년 NATO Software Engineering 컨퍼런스에서 F. L. Bauer가 사용하면서 널리 알려지게 되었다.[88] 소프트웨어 위기라는 용어도 이 컨퍼런스에서 처음 등장한 것으로 알려져 있다.

소프트웨어 공학은 컴퓨터와 함께 발전해 왔으며, 관련 도구와 응용 프로그램도 지속적으로 진화해 왔다. 1949년 EDSAC에서는 이미 로더가 초기 어셈블러의 기능을 갖추고 있었고,[106] 1950년대에는 어셈블리어와 포트란(FORTRAN), 리스프(LISP)와 같은 초기 고급 언어들이 등장했다. 1970년대에는 유닉스(UNIX), 코드 저장소, make 등의 협업 도구가 등장했으며, 1980년대에는 개인용 컴퓨터상용 소프트웨어가 확산되고 객체 지향 프로그래밍이 주목받기 시작했다. 1990년대에는 객체 지향 프로그래밍, 애자일 소프트웨어 개발, 익스트림 프로그래밍이 주류가 되었고, 2000년대에는 자바(Java), 루비(Ruby), 파이썬(Python), PHP와 같은 인터프리터 기반 언어와 .NET Framework의 관리 코드 등이 널리 사용되기 시작했다.

4. 1. 소프트웨어 개발 생명 주기 (SDLC)

소프트웨어는 구상부터 폐기까지 점진적으로 발전하는 '''소프트웨어 생명 주기'''(life cycle영어)를 가진다.[89] 이러한 소프트웨어 생명 주기를 프로세스로 인식할 때의 유형을 '''생명 주기 모델'''(life cycle model영어)이라고 한다.[90]

개발 프로세스 모델에는 요구 분석부터 테스트까지 순차적으로 진행하는 폭포수 모델, 개발 기간을 짧게 나누어 각 개발 공정을 반복하는 나선형 모델 등이 있다. 소프트웨어 생명 주기를 정의하는 표준으로는 ISO 12207이 있다.

개발 프로세스를 개선하기 위한 방법론 및 연구를 소프트웨어 개발 방법론이라고 한다. 프로세스에 주목한 방법론으로는 폭포수 모델을 따르는 폭포수 개발, 나선형 모델을 따르는 반복형 개발, 애자일 소프트웨어 개발 등이 있다. 애자일 소프트웨어 개발에서는 테스트 주도 개발과 같이 순서나 각 단계의 의미를 변경하기도 한다. 개발 프로세스와 운영 프로세스의 통합을 목표로 하는 DevOps도 있다.

4. 2. 요구사항 분석

요구사항 공학은 소프트웨어에 대한 요구사항을 도출, 분석, 명세 및 검증하는 것이다.[35] 이는 소프트웨어 개발의 첫 단계로, 사용자의 요구사항을 정확하게 파악하고 분석하는 과정을 의미한다.

소프트웨어 요구사항은 크게 기능적, 비기능적, 도메인 요구사항으로 분류할 수 있다.[35]

  • 기능 요구사항: 예상되는 동작, 즉 출력을 설명한다.
  • 비기능 요구사항: 이식성, 보안, 유지보수성, 신뢰성, 확장성, 성능, 재사용성, 유연성 등의 문제를 다룬다. 시스템 또는 소프트웨어가 작동하는 방식에 대한 지식이 필요하며, 인터페이스, 성능(응답 시간, 보안, 저장 공간 등), 운영, 수명 주기(유지보수성, 이식성 등), 경제적 제약과 같은 유형으로 분류된다.
  • 도메인 요구사항: 특정 범주 또는 프로젝트 도메인의 특성과 관련이 있다.[35]

4. 3. 소프트웨어 설계

소프트웨어 설계는 소프트웨어에 대한 상위 수준 계획을 세우는 과정이다. 설계는 다음과 같은 수준으로 나뉜다.

  • 인터페이스 설계: 시스템과 그 환경 간의 상호 작용뿐만 아니라 시스템의 내부 작동 방식을 계획한다.
  • 아키텍처 설계: 시스템의 주요 구성 요소와 그들의 책임, 속성, 그리고 구성 요소 간의 인터페이스를 계획한다.
  • 상세 설계: 속성, 관계, 알고리즘자료 구조를 포함한 내부 요소를 계획한다.[36]


사람이 여러 장기로 구성되는 것처럼, 소프트웨어도 여러 구성 요소로 이루어진 구조를 갖는다. 이러한 구조를 소프트웨어 아키텍처라고 한다. 디자인 패턴/안티 패턴은 아키텍처보다 더 세부적인 구조이다. 또한 프로그래밍의 지침을 프로그래밍 패러다임이라고 한다. 패러다임은 결과적으로 구조에 영향을 미친다. 예를 들어 구조적 프로그래밍, 객체 지향 프로그래밍이 있다.

소프트웨어 시스템을 더욱 발전시키는 다양한 방법론(methodology)이 소프트웨어 공학에서 연구되고 있다. 라이프 사이클별 방법론이나 아키텍처 구현 관련 방법론 등이 있다. 특정 설계를 채택하고 그것이 개발 프로세스와 강하게 연결되는 방법론도 존재한다. 객체지향 개발 방법론, 도메인 주도 설계가 그 예이다.

소프트웨어가 더 나은 구조를 갖도록 하는 다양한 방법론이 연구되고 있으며, 표준으로는 UML이 있다.

4. 4. 소프트웨어 구현 (코딩)

소프트웨어 구축은 컴퓨터 프로그래밍(코딩)과 단위 테스트, 통합 테스트, 디버깅을 포함하며, 이는 일반적으로 설계를 구현하기 위해 사용된다.[1] [6] 이 단계에서 프로그래머는 코드가 설계대로 동작하는지, 그리고 다음 단계의 테스트를 수행할 준비가 되었는지 확인하기 위해 테스트를 수행한다.

4. 5. 소프트웨어 테스팅

소프트웨어 테스팅은 테스트 대상 소프트웨어의 품질에 대한 정보를 이해관계자에게 제공하기 위해 수행되는 경험적이고 기술적인 조사이다.[1][6] 개발과 별도로 설명할 때, 테스팅은 일반적으로 해당 소프트웨어를 작성한 프로그래머가 아닌 테스트 엔지니어 또는 품질 보증 담당자가 수행한다. 시스템 수준에서 수행되며 소프트웨어 품질의 한 측면으로 간주된다.

그레이스 호퍼하버드 대학교에 설치된 하버드 마크 II 컴퓨터로 작업하던 중, 동료들이 계전기에 끼어 연산을 방해하고 있던 나방을 발견하였는데, 이에 그녀가 그들이 시스템에서 "벌레를 잡고 있다"고 표현하였다. 하여 버그라고 하는 유명한 단어가 탄생.

4. 6. 소프트웨어 유지보수

소프트웨어 유지보수는 소프트웨어 출시 후 지원하는 것을 말한다. 여기에는 오류 수정, 최적화, 사용하지 않는 기능 및 폐기된 기능 삭제, 기존 기능 개선 등이 포함될 수 있지만 이에 국한되지는 않는다.[1][6]

일반적으로 유지보수는 프로젝트 비용의 40%에서 80%를 차지한다.[37]

4. 7. 소프트웨어 형상 관리

소프트웨어 시스템은 매우 복잡하므로, 그 형상(버전과 소스 제어)을 표준화하고 구조적인 방법으로 관리해야 한다.[107]

4. 8. 소프트웨어 프로젝트 관리

소프트웨어 공학 관리는 프로젝트 관리와 매우 밀접하지만, 다른 관리 분야와는 다른 소프트웨어 고유의 특징이 있다.[107]

5. 세부 분야

소프트웨어 공학은 다음 10가지 분야로 나뉜다.[107]


  • 소프트웨어 요구사항: 소프트웨어 요구 사항을 추출, 분석, 명세, 검증한다. 소프트웨어 요구공학(Software Requirements Engineering) 분야가 독립적으로 존재한다.
  • 소프트웨어 설계: 보통 전산 지원 소프트웨어 공학(CASE) 도구를 이용하며, UML과 같은 표준 형식을 사용한다.
  • 소프트웨어 개발: 프로그래밍 언어를 사용하여 소프트웨어를 구축한다.
  • 소프트웨어 시험
  • 소프트웨어 유지 보수: 소프트웨어 시스템은 초기 완성 후 오랜 시간이 지나면 문제를 일으킬 수 있어 개선이 필요하다.
  • 소프트웨어 형상 관리: 소프트웨어 시스템은 매우 복잡하므로 형상(버전과 소스 제어)을 표준화하고 구조적인 방법으로 관리해야 한다.
  • 소프트웨어 공학 관리: 프로젝트 관리와 매우 밀접하지만, 소프트웨어 고유의 미묘한 차이가 있다.
  • 소프트웨어 개발 프로세스: 소프트웨어를 구축하는 과정에 대해 실무자들 사이에서 논쟁이 있으며, 주요 패러다임은 애자일 프로세스와 폭포수 프로세스이다.
  • 소프트웨어 공학 도구, CASE 참조.
  • 소프트웨어 품질

6. 교육 및 자격증

프로그래밍에 관한 지식은 소프트웨어 공학자가 되기 위한 중요한 요건이지만, 이것만으로는 충분하지 않다. 많은 소프트웨어 공학자들이 컴퓨터 과학 학위를 가지고 있지만, 소프트웨어 공학 프로그램이 고등 교육에서 부족했기 때문에 진정한 소프트웨어 공학자가 부족하다는 지적도 있다.[113] 그러나 최근에는 학부 이후 학위로 소프트웨어 공학 학위가 소개되고 있다.

소프트웨어 엔지니어가 되기 위해서는 대학교 학위를 취득하거나 직업 학교에서 교육을 받는 경우가 많다. 또한, 기업들은 정보 기술 분야의 경력을 쌓고자 하는 학생들을 위해 인턴십을 제공하기도 하며, 군 복무를 통해서도 유사한 경험을 얻을 수 있다.

소프트웨어 엔지니어링 지식의 확산과 분야의 성숙을 위해 라이선스, 인증 및 체계화된 지식 기반을 요구하는 목소리도 있다.[81]

하지만, 소프트웨어 엔지니어링이라는 개념이 너무 새롭기 때문에 제대로 이해되지 못하고 있으며, 교과서, 논문, 프로그래머 및 개발자 커뮤니티를 포함하여 널리 오해되고 있다는 주장도 있다.[82]

또한, 소프트웨어 엔지니어링의 핵심 문제는 접근 방식이 경험적이지 않다는 것이다. 실제 세계에서 접근 방식의 검증이 매우 제한적이기 때문에 "이론적 환경"에서만 가능한 것으로 오해된다는 주장도 있다.[82]

에츠허르 데이크스트라는 "소프트웨어 엔지니어링"이라는 개념을 거부하고, 그 용어들이 컴퓨터 과학에 대한 부적절한 비유라고 주장했다.

6. 1. 한국

국내 대학에는 컴퓨터공학과, 소프트웨어학과 등 소프트웨어 공학 관련 학과가 있으며, 관련 교육 과정을 제공하고 있다. 또한, 정보처리기사, 정보시스템감리사 등 소프트웨어 관련 자격증 제도도 운영되고 있다.

SW 마에스트로, 삼성 청년 SW 아카데미(SSAFY) 등 정부 및 기업 주도의 소프트웨어 인력 양성 프로그램도 운영되고 있다.

6. 2. 해외

프로그래밍 지식은 소프트웨어 공학자가 되기 위한 중요한 선수 요건이지만, 그것만으로는 충분하지 않다. 많은 소프트웨어 공학자들이 컴퓨터 과학 학위를 가지고 있지만, 진정한 소프트웨어 공학자가 부족하다는 지적도 있다.[113] 이는 소프트웨어 공학 프로그램이 고등 교육에 부족했기 때문이다. 그러나 최근에는 학부 이후 학위로 소프트웨어 공학 학위가 소개되고 있다. 학부 소프트웨어 엔지니어링 학위를 위한 표준 국제 교육과정은 IEEE 컴퓨터 학회와 컴퓨팅 기계학회의 컴퓨팅 교육과정 합동 태스크포스에 의해 정의되었고, 2014년에 업데이트되었다.[19] 표준 국제 학부 교육과정은 CCSE에서 정의하고 있다.

2004년 IEEE 컴퓨터 학회는 SWEBOK을 발표했고, 이는 소프트웨어 공학자가 알아야 할 지식 범위를 정의하는 표준 ISO/IEC 24773으로 채택되었다.[114]

유럽 위원회는 에라스무스 문두스 프로그램의 일환으로 소프트웨어 공학 유럽 석사 학위를 유럽 내외 학생들에게 제공하고 있다.[115] 이는 복수 전공 프로그램으로, 유럽 내 4개 학교가 관련되어 있다.

많은 소프트웨어 엔지니어들은 대학교 학위를 취득하거나 직업 학교에서 교육을 받아 이 직업에 진출한다.

1987년, 임페리얼 컬리지 런던 컴퓨팅학과는 세계 최초의 3년제 소프트웨어 공학 학사 학위 과정을 도입했다. 이듬해에는 셰필드 대학교에서도 유사한 프로그램을 설립했다.[39] 1996년, 로체스터 공과대학교는 미국 최초의 소프트웨어 공학 학사 학위 프로그램을 설립했지만, ABET 인증을 받은 것은 2003년이었다. 같은 해에 라이스 대학교, 클락슨 대학교, 밀워키 공과대학교, 미시시피 주립 대학교도 인증을 받았다.[40] 1997년, 인도 코임바토르의 PSG 공과대학은 소프트웨어 공학 석사 5년제 통합 과정을 처음으로 시작했다.

최초의 소프트웨어 공학 석사 학위는 1979년 시애틀 대학교에서 설립되었다. 1998년, 미국 해군 대학원은 세계 최초의 소프트웨어 공학 박사 학위 프로그램을 설립했다.

7. 윤리 및 사회적 책임

소프트웨어 개발자와 엔지니어는 윤리적 책임과 사회적 영향에 대한 깊은 이해가 필요하다.

IEEE 컴퓨터 학회와 컴퓨팅 기계 협회(ACM)는 미국의 주요 소프트웨어 엔지니어링 전문 기관으로, 소프트웨어 엔지니어링 직업에 대한 안내서를 발행한다. IEEE의 SWEBOK은 해당 분야를 정의하고 실무 소프트웨어 엔지니어가 갖추어야 할 지식을 설명하며, 최신 버전은 SWEBOK v4이다.[6] IEEE는 또한 "소프트웨어 엔지니어링 윤리 강령"을 공표한다.[45]

전문 소프트웨어 엔지니어의 면허나 자격증에 대한 법률적 요구 사항은 전 세계적으로 다르다. 영국에는 소프트웨어 엔지니어라는 직함을 사용하는 것에 대한 면허나 법적 요구 사항이 없다. 캐나다의 앨버타, 브리티시컬럼비아, 온타리오[42] 및 퀘벡과 같은 일부 지역에서는 소프트웨어 엔지니어가 전문 엔지니어(P.Eng) 자격증 및/또는 정보 시스템 전문가(I.S.P.) 자격증을 취득할 수 있다. 유럽에서는 소프트웨어 엔지니어가 유럽 엔지니어(EUR ING) 전문 자격을 취득할 수 있으며, 공인 엔지니어는 영국 컴퓨터 학회(British Computer Society)를 통해 전문 자격을 갖출 수 있다. 미국에서는 NCEES가 2013년에 소프트웨어 엔지니어링을 위한 전문 엔지니어 시험을 제공하기 시작했으나, 참여 부족으로 2019년 4월 이후 시험이 중단되었다.[43][44]

초기 아웃소싱의 영향과 개발도상국의 저렴한 국제 인적 자원은 북미와 유럽 기업의 소프트웨어 개발 활동을 인도, 중국, 러시아 및 기타 개발도상국으로 대규모 이전하게 만들었다. 이러한 접근 방식에는 고객과 개발자 간의 상호 작용을 방해하는 거리/시간대 차이와 대규모 일자리 이전이라는 주요 결함이 있었고, 이는 소프트웨어 공학 분야에 부정적인 영향을 미쳤다. 그럼에도 불구하고, 릴레이 개발 방식 워크플로를 통해 해외 및 근해 자원을 효율적으로 활용하는 능력은 많은 조직의 전반적인 운영 능력을 향상시켰다.[76]

7. 1. 윤리적 고려 사항

전 세계적으로 전문 소프트웨어 엔지니어의 면허나 자격증에 대한 법률적 요구 사항은 서로 다르다. 영국에서는 소프트웨어 엔지니어라는 직함을 사용하는 데 면허나 법적 요구 사항이 없다. 캐나다에서는 앨버타, 브리티시컬럼비아, 온타리오[42], 퀘벡과 같은 일부 주에서 소프트웨어 엔지니어가 전문 엔지니어(P.Eng) 자격증이나 정보 시스템 전문가(I.S.P.) 자격증을 취득할 수 있다. 유럽에서는 소프트웨어 엔지니어가 유럽 엔지니어(EUR ING) 전문 자격을 취득할 수 있으며, 공인 엔지니어는 영국 컴퓨터 학회(British Computer Society)를 통해 전문 자격을 갖출 수 있다.

미국에서는 NCEES가 2013년부터 소프트웨어 엔지니어링 전문 엔지니어 시험을 제공하여 소프트웨어 엔지니어가 면허를 받고 인정받을 수 있게 되었다.[43] 그러나 참여 부족으로 2019년 4월 이후 시험이 중단되었다.[44] 현재 의무 면허는 여전히 논쟁의 여지가 많은 상황이다.[70][71]

IEEE 컴퓨터 학회와 컴퓨팅 기계 협회(ACM)는 미국의 주요 소프트웨어 엔지니어링 전문 기관으로, 소프트웨어 엔지니어링 직업에 대한 안내서를 발행한다. IEEE의 SWEBOK은 해당 분야를 정의하고 실무 소프트웨어 엔지니어가 갖추어야 할 지식을 설명하며, 최신 버전은 SWEBOK v4이다.[6] IEEE는 "소프트웨어 엔지니어링 윤리 강령"도 공표한다.[45]

7. 2. 사회적 영향

해외 아웃소싱(다른 국가에서 소프트웨어 제품이나 서비스를 수입하는 것)과 외국인 노동자에 의한 일자리 대체에 대한 우려 때문에 선진국의 일부 학생들은 소프트웨어 공학 관련 교육을 기피하는 현상이 발생했다.[74] 통계적으로는 소프트웨어 공학 자체는 위협받지 않지만, 관련 직종인 컴퓨터 프로그래밍은 영향을 받은 것으로 나타났다.[75]

초기 아웃소싱의 영향으로 개발도상국의 저렴한 국제 인적 자원이 활용되면서, 북미와 유럽 기업의 소프트웨어 개발 활동은 인도, 중국, 러시아 및 기타 개발도상국으로 대규모 이전되었다. 이러한 방식은 고객과 개발자 간의 상호 작용을 방해하는 거리 및 시간대 차이, 대규모 일자리 이전이라는 문제점을 가지고 있었다.

그러나 릴레이 개발 방식 워크플로를 통해 해외 및 근해 자원을 효율적으로 활용하는 것은 많은 조직의 운영 능력을 향상시켰다.[76] 예를 들어, 북미 직원들이 퇴근할 때 아시아 직원들이 출근하고, 아시아 직원들이 퇴근할 때 유럽 직원들이 출근하는 방식으로 24시간 비즈니스 프로세스를 지속적으로 감독할 수 있게 되었다.

글로벌 아웃소싱은 여러 장점을 가지지만, 지리적, 시간적, 문화적, 의사소통(다양한 지역에서 영어의 서로 다른 언어와 방언 사용 포함)의 어려움에 직면할 수 있다.[77] 지난 15년 동안 글로벌 소프트웨어 개발 분야의 연구가 진행되면서 이와 관련된 이점과 문제점이 밝혀졌으며, 소프트웨어 공학의 다른 측면과 마찬가지로 이 분야 및 관련 분야에 대한 연구는 계속되고 있다.

8. 논쟁 및 비판

소프트웨어 공학 분야는 여러 논쟁과 비판에 직면해 있다.

소프트웨어 공학 지식의 확산과 분야 성숙을 위해 라이선스, 인증, 체계화된 지식 기반을 요구하는 목소리가 있다.[81] 그러나 소프트웨어 공학이라는 개념 자체가 너무 새롭기 때문에 제대로 이해되지 못하고 널리 오해되고 있다는 주장도 제기된다.[82]

소프트웨어 공학의 핵심 문제는 그 접근 방식이 경험적이지 않다는 비판이다. 즉, 실제 세계에서 검증이 부족하거나 매우 제한적이기 때문에, "이론적 환경"에서만 가능한 것으로 오해된다는 것이다.[82]

초기 아웃소싱의 영향으로 북미와 유럽의 소프트웨어 개발 활동이 인도, 중국, 러시아 등 개발도상국으로 이전되었다. 이러한 방식은 거리와 시간대 차이, 대규모 일자리 이전 등의 문제점을 야기했다. 이로 인해 선진국 학생들은 해외 아웃소싱과 외국인 노동자에 의한 일자리 대체 우려로 소프트웨어 공학 교육을 기피하기도 한다.[74] 관련 통계에 따르면, 소프트웨어 공학 자체는 아니지만 컴퓨터 프로그래밍 직종은 영향을 받은 것으로 나타났다.[75]

8. 1. 공학으로서의 정체성 논쟁

마가렛 해밀턴은 아폴로 계획 작업 중 "소프트웨어 공학"이라는 용어를 제창했다. "공학"이라는 용어는 소프트웨어 작업이 기술 발전에 대한 다른 기여만큼 중요하게 여겨져야 함을 인정하기 위해 사용되었다.[29] 해밀턴은 자신이 이 용어를 사용한 이유에 대해 다음과 같이 설명한다.

> 처음으로 그 용어를 생각해 냈을 때, 적어도 우리 분야에서는 아무도 들어본 적이 없었습니다. 오랫동안 계속되는 농담거리였죠. 그들은 제 급진적인 아이디어를 가지고 놀리곤 했습니다. 가장 존경받는 하드웨어 전문가 중 한 명이 회의에서 소프트웨어 제작 과정도 하드웨어처럼 공학 분야로 간주되어야 한다는 데 동의한다고 모두에게 설명했을 때 기억에 남는 날이었습니다. 새로운 "용어" 자체에 대한 그의 수용 때문이 아니라, 우리가 그와 회의실에 있던 다른 사람들의 수용을 얻어 독자적인 공학 분야에 속하게 되었기 때문입니다.[29]

소프트웨어 엔지니어링 지식의 확산과 분야의 성숙을 위한 메커니즘으로 라이선스, 인증 및 체계화된 지식 기반을 요구하는 목소리가 있다.[81]

소프트웨어 엔지니어링이라는 개념이 너무나 새롭기 때문에 거의 이해되지 않고 있으며, 소프트웨어 엔지니어링 교과서, 논문, 프로그래머 및 개발자 커뮤니티를 포함하여 널리 오해되고 있다는 주장도 있다.[82]

소프트웨어 엔지니어링의 핵심 문제는 접근 방식이 경험적이지 않다는 것이다. 실제 세계에서 접근 방식의 검증이 일반적으로 없거나 매우 제한적이기 때문에 소프트웨어 엔지니어링은 종종 "이론적 환경"에서만 가능한 것으로 오해된다는 주장이 있다.[82]

오늘날 소프트웨어 개발의 많은 개념을 창시한 에츠허르 데이크스트라는 2002년 사망할 때까지 "소프트웨어 엔지니어링"이라는 개념을 거부하고, 그 용어들이 자신이 "급진적인 참신함"이라고 부른 컴퓨터 과학에 대한 부적절한 비유라고 주장했다.

"소프트웨어 공학"을 공학의 한 분야로 어떻게 정의할 것인가는 사람에 따라 다르며, 논쟁이 있어 왔다. 데이비드 파너스는 소프트웨어 공학이 실제로 공학의 한 형태라고 했다.[100][101] 스티브 맥코넬은 공학이 아니라고 했지만, 공학으로 진화해야 한다고 주장했다.[102] 도널드 크누스는 프로그래밍은 기술이자 과학이라고 했다.[103] 에드거 다익스트라는 "소프트웨어 공학"과 "소프트웨어 엔지니어"라는 용어가 특히 미국에서 오용되고 있다고 지적했다.[104]

데이비드 파너스는 "나는 소프트웨어 공학을 컴퓨터 과학의 한 분야로서가 아니라, 토목 공학, 기계 공학, 화학 공학, 전기 공학 등의 요소를 결합한 것으로 다룬다"고 말하고 있다.[105]

8. 2. 방법론 논쟁

소프트웨어 공학 지식의 확산과 분야 성숙을 위해 라이선스, 인증, 체계화된 지식 기반을 요구하는 목소리가 있다.[81] 그러나 소프트웨어 공학이라는 개념 자체가 너무 새롭기 때문에 제대로 이해되지 못하고 널리 오해되고 있다는 주장도 제기된다.[82]

소프트웨어 공학의 핵심 문제는 그 접근 방식이 경험적이지 않다는 비판이다. 즉, 실제 세계에서 검증이 부족하거나 매우 제한적이기 때문에, "이론적 환경"에서만 가능한 것으로 오해된다는 것이다.[82]

오늘날 소프트웨어 개발의 많은 개념을 창시한 에츠허르 데이크스트라는 "소프트웨어 공학"이라는 용어를 거부하고, 컴퓨터 과학에 대한 부적절한 비유라고 주장했다. 그는 "소프트웨어 공학"이 "프로그래밍을 할 줄 모르는 사람을 위한 방법"을 강령으로 삼았다고 비판했다.[83]

8. 3. 자동화와 일자리 감소

초기 아웃소싱의 영향으로 북미와 유럽의 소프트웨어 개발 활동이 인도, 중국, 러시아 등 개발도상국으로 이전되었다. 이러한 방식은 거리와 시간대 차이, 대규모 일자리 이전 등의 문제점을 야기했다. 이로 인해 선진국 학생들은 해외 아웃소싱과 외국인 노동자에 의한 일자리 대체 우려로 소프트웨어 공학 교육을 기피하기도 한다.[74] 관련 통계에 따르면, 소프트웨어 공학 자체는 아니지만 컴퓨터 프로그래밍 직종은 영향을 받은 것으로 나타났다.[75]

9. 미래 전망

소프트웨어 공학의 미래는 해외 아웃소싱과 외국인 노동자 비자 문제 등으로 인해 선진국 학생들의 교육 기피 현상이 나타나기도 했지만, 릴레이 개발 방식과 같은 효율적인 워크플로를 통해 조직의 운영 능력을 향상시키는 방향으로 발전하고 있다.[76] 지리적, 시간적, 문화적, 의사소통의 어려움에도 불구하고, 글로벌 소프트웨어 개발 분야의 연구는 계속 진행 중이다.[77]

참조

[1] 논문
[2] 웹사이트 Computing Degrees & Careers http://computingcare[...] ACM 2010-11-23
[3] 서적 What Every Engineer Should Know about Software Engineering https://books.google[...] CRC 2011-01-21
[4] 웹사이트 What Does a Software Engineer Do? https://www.coursera[...] coursera 2022-10-31
[5] 잡지 Programmers: Stop Calling Yourselves Engineers https://www.theatlan[...] 2015-11-05
[6] 서적 Guide to the Software Engineering Body of Knowledge Version 3.0 (SWEBOK) https://www.computer[...] IEEE Computer Society 2014
[7] 웹사이트 The history of coding and software engineering https://www.hackreac[...] 2021-05-06
[8] 웹사이트 Computers and Automation: The Computer Directory and Buyers' Guide, 1965 http://www.bitsavers[...] 2023-07-15
[9] 학술지 President's Letter to the ACM Membership Association for Computing Machinery
[10] 웹사이트 The origin of "software engineering" https://bertrandmeye[...] 2013-04-04
[11] 웹사이트 The 1968/69 NATO Software Engineering Reports http://homepages.cs.[...] 2017-11-17
[12] 웹사이트 Margaret Hamilton: First Software Engineer https://www.computer[...] IEEE Computer Society 2008-10-05
[13] 서적 Software Engineering Pearson Education Limited 2015-03-24
[14] 컨퍼런스 Software Engineering: Report of a conference sponsored by the NATO Science Committee http://homepages.cs.[...] Scientific Affairs Division, NATO 1968-10-07
[15] 웹사이트 The 1968/69 NATO Software Engineering Reports http://homepages.cs.[...] The School of the Computer Sciences, Newcastle University 2001-08-10
[16] 웹사이트 ICSE 2018 – Plenary Sessions – Fred Brooks https://www.youtube.[...] 2018-05-31
[17] 웹사이트 ICSE 2018 – Plenary Sessions – Margaret Hamilton https://www.youtube.[...] 2018-05-31
[18] 학술지 Software engineering institute (SEI) https://dl.acm.org/d[...] John Wiley and Sons Ltd. 2003-01-01
[19] 서적 Software Engineering 2014: Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering https://www.acm.org/[...] IEEE Computer Society and Association for Computing Machinery 2015-02-23
[20] 간행물 Systems and software engineering – Vocabulary ISO/IEC/IEEE
[21] 간행물 IEEE Standard Glossary of Software Engineering Terminology IEEE
[22] 서적 Software Engineering http://www.pearsoned[...] Pearson Education
[23] 학술지 Software Engineering
[24] 웹사이트 Definition of SOFTWARE ENGINEERING https://www.merriam-[...] 2019-11-25
[25] 서적 Software Engineering at Google O'Reilly Media, Inc.
[26] 웹사이트 Engineering an Academic Program in Software Engineering http://www.micsympos[...] 35th Annual Midwest Instruction and Computing Symposium 2002-04-05
[27] 서적 An Undergraduate Curriculum in Software Engineering https://books.google[...] Springer
[28] 학술지 Realising evidence-based software engineering 2005
[29] 서적 Fluency with information technology : skills, concepts, & capabilities
[30] 학술지 Software Engineering Programmes are not Computer Science Programmes http://citeseer.ist.[...]
[31] 학술지 Software Engineering Programmes are not Computer Science Programmes http://citeseer.ist.[...]
[32] 서적 Professional Software Development: Shorter Schedules, Better Projects, Superior Products, Enhanced Careers https://archive.org/[...] Addison-Wesley 2003-08
[33] 학술지 Computer Programming as an Art http://disciplinas.l[...]
[34] 웹사이트 There is still a war going on (manuscript Austin, 3 December 1993) http://www.cs.utexas[...] The University of Texas at Austin, Department of Computer Sciences 2004-11-23
[35] 웹사이트 Software Engineering {{!}} Classification of Software Requirements https://www.geeksfor[...] 2018-06-19
[36] 웹사이트 Software Engineering {{!}} Software Design Process https://www.geeksfor[...] 2021-05-06
[37] 웹사이트 What is Software Maintenance? Definition of Software Maintenance, Software Maintenance Meaning https://economictime[...] 2021-05-06
[38] 서적 Guide to the Software Engineering Body of Knowledge http://www.computer.[...] IEEE Computer Society 2005
[39] 논문 The first decade of an undergraduate degree program in software engineering 1999-04-01
[40] 웹사이트 ABET Accredited Engineering Programs http://www.abet.org/[...] 2007-04-03
[41] 서적 Professional Software Development: Shorter Schedules, Higher Quality Products, More Successful Projects, Enhanced Careers 2003-07-10
[42] 학회 Professional Engineers Ontario's approach to licensing software engineering practitioners IEEE 2001-02-19
[43] 웹사이트 NCEES Software Engineering Exam Specifications http://cdn1.ncees.co[...]
[44] 웹사이트 NCEES discontinuing PE Software Engineering exam https://ncees.org/nc[...] National Council of Examiners for Engineering and Surveying 2018-03-13
[45] 웹사이트 Software Engineering Code of Ethics http://www.computer.[...]
[46] 웹사이트 How Many Programmers are there in the World and in the US? [2023] https://qubit-labs.c[...] 2022-11-29
[47] 웹사이트 Global Developer Population and Demographic Study 2016 V2 http://evansdata.com[...] Evans Data Corporation
[48] 웹사이트 Computer Software Engineers and Computer Programmers http://www.bls.gov/o[...]
[49] 웹사이트 Software Developers https://www.bls.gov/[...] U. S. Bureau of labor Statistics 2019-09-04
[50] 웹사이트 Computing Disciplines and Majors https://www.acm.org/[...] Association for Computing Machinery
[51] 웹사이트 Software Developers: Occupational Outlook Handbook http://www.bls.gov/o[...] U.S. Bureau of Labor Statistics
[52] 웹사이트 Computer Software Engineer http://www.bls.gov/k[...] Bureau of Labor Statistics 2010-03-19
[53] 웹사이트 Software Developers http://www.bls.gov/o[...] Bureau of Labor Statistics 2014-01-08
[54] 웹사이트 Tech Companies Want You to Believe America Has a Skills Gap https://www.bloomber[...] 2020-08-04
[55] 웹사이트 Computer Programmers : Occupational Outlook Handbook: : U.S. Bureau of Labor Statistics https://www.bls.gov/[...]
[56] 웹사이트 Archive By Publication : Beyond the Numbers: U.S. Bureau of Labor Statistics https://www.bls.gov/[...]
[57] 웹사이트 The Soon-to-Be-Extinct Embedded Software Engineer https://www.designne[...] 2018-05-10
[58] 웹사이트 hp's Developer Portal | HP International Women's Week: Women in Computer Science dropping since 1980s https://developers.h[...]
[59] 웹사이트 Software engineer jobs in danger due to ChatGPT-like tools? Here's what Google CEO Sundar Pichai has to say https://www.business[...] 2023-04-06
[60] 웹사이트 ChatGPT could make these jobs obsolete https://nypost.com/2[...] 2023-01-25
[61] 웹사이트 Software engineers are panicking about being replaced by AI https://www.business[...]
[62] 웹사이트 Council Post: How Will ChatGPT Affect Jobs? https://www.forbes.c[...]
[63] 웹사이트 ChatGPT spells the end of coding as we know it https://www.business[...]
[64] 웹사이트 ChatGPT may be coming for our jobs. Here are the 10 roles that AI is most likely to replace. https://www.business[...]
[65] 웹사이트 These are the tech jobs most threatened by ChatGPT and A.I. https://www.cnbc.com[...] 2023-04-15
[66] 웹사이트 SEI certification page http://www.sei.cmu.e[...] Sei.cmu.edu
[67] 웹사이트 The Top 10 Problems with IT Certification in 2008 http://www.informit.[...] 2008-03-14
[68] 웹사이트 2006 IEEE computer society report to the IFIP General Assembly http://www.ifip.org/[...]
[69] 웹사이트 CSDA http://www.computer.[...]
[70] 웹사이트 Past ACM Presidents Reflect on Their Service to ACM https://www.acm.org/[...] Association for Computing Machinery
[71] 논문 Should software engineers be licensed? 2002-11-01
[72] 웹사이트 I.S.P. Designation http://www.cips.ca/s[...] 2007-03-15
[73] 웹사이트 Professional Engineers Ontario: Welcome to PEO's website http://www.peo.on.ca Peo.on.ca 2012-03-25
[74] 웹사이트 As outsourcing gathers steam, computer science interest wanes http://www.computerw[...] Computerworld.com 2006-05-05
[75] 웹사이트 Software developer growth slows in North America: Study shows Asia will lead in software developer jobs by 2010 https://www.infoworl[...] 2007-03-13
[76] 웹사이트 Gartner Magic Quadrant http://www.cognizant[...] Cognizant.com 2012-03-25
[77] 논문 Virtual software team project management http://eprints.dkit.[...] 2010-08-20
[78] 웹사이트 Outstanding Research Award https://www2.sigsoft[...] 2024-04-01
[79] 웹사이트 SIGSOFT Awards 2024 https://sigsoft.medi[...] 2024-01-17
[80] 웹사이트 ICSE Most Influential Paper Award https://www.sigsoft.[...] ACM SIGSOFT
[81] 논문 Viewpoint: taking the lead in licensing software engineers 1999-04
[82] 논문 Software engineering is a value-based contact sport 2002-09-10
[83] 웹사이트 On the cruelty of really teaching computing science http://www.cs.utexas[...] 2014-01-10
[84] 웹사이트 Guide to the Software Engineering Body of Knowledge http://www.swebok.or[...] 2004-02-06
[85] 서적 Product Reliability, Maintainability, and Supportability Handbook CRC Press 1995
[86] 웹사이트 Guide to the Software Engineering Body of Knowledge http://www.swebok.or[...] 2004-02-06
[87] 웹사이트 Guide to the Software Engineering Body of Knowledge http://www.swebok.or[...] 2004-02-06
[88] 웹사이트 There is still a war going on (manuscript Austin, 3 December 1993) http://www.cs.utexas[...] The University of Texas at Austin, Department of Computer Sciences 1993-12-03
[89] 표준 ISO/IEC 12207 (JIS X 0160):2021 - ライフサイクル(life cycle)
[90] 표준 ISO/IEC 12207 (JIS X 0160):2021 - ライフサイクルモデル(life cycle model)
[91] 표준 ISO/IEC 12207 (JIS X 0160):2021 - ライフサイクルプロセス
[92] 문서 伽藍方式とバザール方式
[93] 표준 IEEE Standard Glossary of Software Engineering Terminology IEEE 1990
[94] 서적 Software Engineering http://www.pearsoned[...] Pearson Education 2007
[95] 논문 Software Engineering North-Holland Publishing Co. 1972
[96] 웹사이트 Engineering an Academic Program in Software Engineering http://www.micsympos[...] 35th Annual Midwest Instruction and Computing Symposium 2002-04-05
[97] 서적 An Undergraduate Curriculum in Software Engineering Springer 1990
[98] 웹사이트 Realizing Evidence-based Software Engineering http://evidence.cs.k[...] 2004-12-14
[99] 웹사이트 What's in a Name? Tech Sector battles Engineers on "software engineering" http://www.peo.on.ca[...]
[100] 논문 Software Engineering Programmes are not Computer Science Programmes http://www.cas.mcmas[...] 1998
[101] 논문 Software Engineering Programmes are not Computer Science Programmes http://www.cas.mcmas[...] 1998
[102] 서적 Professional Software Development: Shorter Schedules, Better Projects, Superior Products, Enhanced Careers Addison-Wesley 2003-08
[103] 논문 Computer Programming as an Art http://www.paulgraha[...] 1974
[104] 웹사이트 There is still a war going on (manuscript Austin, 3 December 1993) http://www.cs.utexas[...] The University of Texas at Austin, Department of Computer Sciences 1993-12-03
[105] 논문 Software Engineering Programmes are not Computer Science Programmes http://citeseer.ist.[...] 1998
[106] 문서 EDSAC#시스템 소프트웨어
[107] 서적 Guide to the Software Engineering Body of Knowledge - 2004 Version http://www.swebok.or[...] IEEE Computer Society
[108] 저널 Software engineering: Report of a conference sponsored by the NATO Science Committee http://homepages.cs.[...] Scientific Affairs Division, NATO 2008-12-26
[109] 웹사이트 The 1968/69 NATO Software Engineering Reports http://homepages.cs.[...] The School of Computer Sciences, Newcastle University 2001-08-10
[110] 저널 Go To Statement Considered Harmful http://www.acm.org/c[...] 2007-07-03
[111] 저널 On the Criteria To Be Used in Decomposing Systems into Modules http://www.acm.org/c[...] 2008-12-26
[112] 서적 The Cathedral and the Bazaar
[113] 서적 Professional Software Development: Shorter Schedules, Higher Quality Products, More Successful Projects, Enhanced Careers 2003-07-10
[114] 웹사이트 IEEE COMPUTER SOCIETY FIRST TO MARKET WITH SOFTWARE CERTIFICATIONS THAT MEET NEW ISO STANDARD http://www.computer.[...] IEEE COMPUTER SOCIETY 2008-10-27
[115] 웹사이트 EUROPA - Redirection http://ec.europa.eu/[...]

관련 사건 타임라인

( 최근 20개의 뉴스만 표기 됩니다. )



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com